<?php
/**
 * Application level Controller
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
App::uses ( 'Controller', 'Controller' );

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package app.Controller
 * @link http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller {
	public $components = array (
			'Session',
			// 'Auth' => array(
			// 'authorize' => array(
			// 'Actions' => array('actionPath' => 'controllers')
			// )
			// ),
			'Auth' => array (
					'authenticate' => array (
						'Form' => array (
							'userModel' => 'User',
							'fields' => array (
								'username' => 'username',
								'password' => 'password' 
							)
						)
					),
// 					'authorize' => array(
// 							'Controller',
// 							'Actions' => array('actionPath' => 'controllers/')
// 					),
					'loginRedirect' => array (
							'controller' => 'posts',
							'action' => 'index' 
					),
					'logoutRedirect' => array (
							'controller' => 'users',
							'action' => 'login' 
					) 
			),
			'Acl' 
	);
	public $helpers = array (
			'Html',
			'Session' 
	);
	public function beforeFilter() {
		// Configure AuthComponent
		$this->Auth->loginAction = array (
				'controller' => 'users',
				'action' => 'login' 
		);
		$this->Auth->logoutRedirect = array (
				'controller' => 'users',
				'action' => 'login' 
		);
		$this->Auth->loginRedirect = array (
				'controller' => 'posts',
				'action' => 'index' 
		);
		$this->Auth->loginError = 'Failed to login';
		$this->Auth->authError = 'Access denied';
		
		$controller = $this->params ['controller'];
		$action = $this->action;
		$group = 'guesses';
		
		if ($this->Auth->user ()) {
			$user_info = $this->Auth->user ();
			$group = $user_info ['Group'] ['name'];
		} 
		
		if (! $this->Acl->check ( $group, $controller )) {
			if (! $this->Acl->check ( $group, $controller . '/' . $action )) {
				$this->Session->setFlash ( "You don't have permission to access!", 'default', array (
						'class' => 'alert alert-danger'
				) );
				// $this->redirect(array('controller' => 'posts', 'action' => 'index'));
				$this->layout = 'default';
				$this->render ( '/errors/error' );
			}
		}
	}
}
